package customserver

import (
	"bufio"
	"io"
	"log"
	"net"
	"strings"
)

func Run() {
	// 监听本地 8000 端口的 TCP 连接
	listener, err := net.Listen("tcp", "localhost:8000")
	if err != nil {
		log.Fatal(err)
	}
	log.Println("Server is listening on port 8000")

	// 循环接受客户端连接
	for {
		conn, err := listener.Accept()
		if err != nil {
			log.Print(err)
			continue
		}
		// 为每个客户端连接启动一个 goroutine 处理
		go handleConn(conn)
	}
}

// 处理客户端连接
func handleConn(c net.Conn) {
	// 确保连接在函数结束时关闭
	defer c.Close()
	// 创建一个带缓冲的读取器
	reader := bufio.NewReader(c)
	for {
		// 读取客户端发送的一行数据
		line, err := reader.ReadString('\n')
		if err != nil {
			if err != io.EOF {
				log.Println("Error reading:", err)
			}
			break
		}
		// 去除换行符
		line = strings.TrimSpace(line)
		// 简单处理：将接收到的数据转换为大写并返回给客户端
		response := strings.ToUpper(line) + "\n"
		// 发送响应给客户端
		c.Write([]byte(response))
	}
}
